#include "drv_led.h"
#include "drv_beep.h"
#include "drv_key.h"
#include "drv_usart.h"
#include "drv_exti.h"
#include "string.h"

uint8_t key_flag1 = 0;
uint8_t key_flag2 = 1;
uint8_t key_flag3 = 2;
uint8_t key_flag4 = 3;

#define num 32
char res[num];
int a = 0;
uint8_t data;
void USART1_IRQnHandler(void)
{
	if(USART_GetITStatus(USART1,USART_IT_RXNE))
	{
		USART_ClearFlag(USART1,USART_FLAG_RXNE);
//		USART_SendData(USART1,USART_ReceiveData(USART1));
		data = USART_ReceiveData(USART1);
		res[a] = data;
		
		if(res[a-1] == '\r' && res[a] == '\n')
		{
			if(strcmp(res,"open\r\n") == 0)
			{
				drv_led_open(GPIO_Pin_8);
			}
			else if(strcmp(res,"close\r\n") == 0)
			{
				drv_led_close(GPIO_Pin_8);
			}
		}
		else
		{
			a++;
		}
	}
}


int main()
{
	drv_led_init();//led灯初始化
	drv_systick_init(168);//systick定时器初始化
	drv_key_init(GPIOE,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6);//按键初始化
	drv_key_init2(GPIOC,GPIO_Pin_13);
	drv_usart_init();//串口初始化
	drv_exti_init();
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//选择中断组
	
	printf("hello 2311 class \r\n");
	
	while(1)
	{
//		if(key_flag1 == 0)
//		{
//			drv_led_close(GPIO_Pin_8);
//		}
//		else
//		{
//			drv_led_open(GPIO_Pin_8);
//		}
//		if(get_key_value(GPIOE,GPIO_Pin_4))
//		{
//			key_flag1 =~key_flag1;
//			printf("key_flag1= %d\r\n",key_flag1);
//		}
		drv_systick_delayms(5000);
	}
}





#if 0
int main(void)
{
	drv_led_init();//led灯初始化
	drv_systick_init(168);//systick定时器初始化
	drv_key_init(GPIOE,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6);//按键初始化
	drv_key_init2(GPIOC,GPIO_Pin_13);
	drv_usart_init();//串口初始化
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//选择中断组
	printf("hello 2311 class \r\n");

	while(1)
	{
		if(key_flag4 == 3 )
		{
			if(key_flag1 == 0 )
			{
					drv_led_close(GPIO_Pin_8);
			}
			else
			{
					drv_led_open(GPIO_Pin_8);
			}
			if(key_flag2 == 1 )
			{
					drv_led_close(GPIO_Pin_9);
			}
			else
			{
					drv_led_open(GPIO_Pin_9);
			}
			if(key_flag3 == 2 )
			{
					drv_led_close(GPIO_Pin_10);
			}
			else
			{
					drv_led_open(GPIO_Pin_10);
			}
		}
		else
		{
			drv_led_open(GPIO_Pin_8);
			drv_systick_delayms(500);
			
			drv_led_open(GPIO_Pin_9);
			drv_systick_delayms(500);

			drv_led_open(GPIO_Pin_10);
			drv_systick_delayms(500);
			
			drv_led_close(GPIO_Pin_10);
			drv_led_close(GPIO_Pin_9);
			drv_led_close(GPIO_Pin_8);
			drv_systick_delayms(500);
		}
		
		//获取键值
		if(get_key_value(GPIOE,GPIO_Pin_4))
		{
			key_flag1 = ~key_flag1;
		}
		if(get_key_value(GPIOE,GPIO_Pin_5))
		{
			key_flag2 = ~key_flag2;
		}
		if(get_key_value(GPIOE,GPIO_Pin_6))
		{
			key_flag3 = ~key_flag3;
		}
		if(get_key_value(GPIOC,GPIO_Pin_13))
		{
			key_flag4 = ~key_flag4;
		}
		drv_systick_delayms(10);		
	}
}
#endif
